// show：只导入需要的部分
import 'utils/ConvertUtil.dart' show toNumber, toString;
// divide：隐藏不需要的部分
import 'utils/MathUtil.dart' hide divide;
// as：给引入的包取别名，当多个包中包含相同名字的属性或方法时，这个关键字很有必要
// deferred：延迟加载，启动时不加载，在需要使用时再加载，可以用来提升APP的启动速度，需要使用时，使用loadLibrary()加载
import 'package:http/http.dart' deferred as http show get;

void main() {
  print(toNumber("132"));
  print(toString(123));

  print(add(1, 2));

  _startMethod();
}

/**
 * async表示它是异步的方法
 */
Future _startMethod() async {
  // 第一次使用前需要加载懒加载的库
  await http.loadLibrary();
  print("A开始执行这个方法~");
  /*
    await的作用是等待标记的方法的返回结果，必须在async的方法内使用
    如果没有加await，getHttp()会立刻返回一个future，不等待方法内的代码执行完，就继续执行下面的方法，这里打印出来的结果也会变成——Instance of 'Future<String>'
  */
  print(await getHttp());
  print("A执行结束");
}

Future<String> getHttp() async {
  var uri = new Uri.http('news-at.zhihu.com', '/api/3/stories/latest');
  // 等待响应
  var response = await http.get(uri);
  // 返回响应的内容
  return await response.body.toString();
}
